<?php

namespace App\Containers\AppSection\Pledge\Models\Properties;

use App\Containers\AppSection\File\Models\File;
use App\Ship\Parents\Models\Model;
use Staudenmeir\EloquentJsonRelations\HasJsonRelationships;
use Staudenmeir\EloquentJsonRelations\Relations\BelongsToJson;

/**
 * Жилой дом
 * @package App\Containers\AppSection\Pledge\Models\Properties
 *
 * @property int $id Id
 * @property string $address Адрес
 * @property string $number Номер
 * @property string $total_area Общая площадь
 * @property string $living_area Жилая площадь
 * @property string $other_information Иные сведения
 * @property string $certificate_number Номер свидетельства о праве собственности
 * @property string $certificate_date Дата свидетельства о праве собственности
 * @property string $extract_egrn_from Дата выписки из ЕГРН
 *
 * @property File[] $plans Технический план
 * @property File[] $extracts Скан выписки из ЕГРН
 * @property File[] $certificates Скан свидетельства о праве собственности
 * @property File[] $documents Документы
 * @property File[] $images Фото залога
 */
class House extends Model
{
    use HasJsonRelationships;

    public $timestamps = false;
    protected $table = 'pledge_property_houses';
    protected $casts = [
        'plans' => 'json',
        'extracts' => 'json',
        'certificates' => 'json',
        'documents' => 'json',
        'images' => 'json',
        'certificate_date' => 'date',
        'extract_egrn_from' => 'date',
    ];

    protected $fillable = [
        'address',
        'number',
        'total_area',
        'living_area',
        'other_information',
        'certificate_number',
        'certificate_date',
        'extract_egrn_from',
        'plans',
        'extracts',
        'certificates',
        'documents',
        'images',
    ];

    /**
     * A resource key to be used in the serialized responses.
     */
    protected string $resourceKey = 'House';

    /**
     * Технический план
     * @return BelongsToJson Files
     */
    public function plans(): belongsToJson
    {
        return $this->belongsToJson(File::class, 'plans');
    }

    /**
     * Скан выписки из ЕГРН
     * @return BelongsToJson Files
     */
    public function extracts(): belongsToJson
    {
        return $this->belongsToJson(File::class, 'extracts');
    }

    /**
     * Скан свидетельства о праве собственности
     * @return BelongsToJson Files
     */
    public function certificates(): belongsToJson
    {
        return $this->belongsToJson(File::class, 'certificates');
    }

    /**
     * Документы
     * @return BelongsToJson Files
     */
    public function documents(): belongsToJson
    {
        return $this->belongsToJson(File::class, 'documents');
    }

    /**
     * Фото залога
     * @return BelongsToJson Files
     */
    public function images(): belongsToJson
    {
        return $this->belongsToJson(File::class, 'images');
    }
}
